1

ECMAScript 2015(ES6)及更高版本

Node.js是针对现代版本的V8构建的,通过与该引擎的最新版本保持同步,我们确保及时向Node.js开发人员提供JavaScript ECMA-262规范的新功能,以及持续的性能和稳定性改进。

所有ECMAScript 2015(ES6)功能分为三组,用于交付、阶段和进行中的功能:

  • V8认为稳定的所有交付功能在Node.js上默认打开,不需要任何类型的运行时标志。
  • 分阶段的功能,几乎完成的功能,V8团队认为不稳定,需要运行时标志:--harmony
  • 正在进行的功能可以通过各自的harmony标志单独激活,但除非出于测试目的,否则这是非常不鼓励的,注意:这些标志由V8公开,并且可能会在没有任何弃用通知的情况下更改。

哪些功能默认包含哪个Node.js版本?

网站node.green基于kangax的compat-table,提供了各种版本的Node.js中支持的ECMAScript功能的完美概述。

哪些功能正在进行中?

V8引擎不断添加新功能,一般来说,期望它们落在未来的Node.js版本上,尽管时间尚不清楚。

你可以通过grep --v8-options参数列出每个Node.js版本上可用的所有正在进行的功能,请注意,这些是不完整的,可能是V8的损坏功能,因此使用它们需要你自担风险:

node --v8-options | grep "in progress"

特定功能的性能如何?

V8团队一直在努力提高新语言功能的性能,以最终与EcmaScript 5及更早版本中的已转换的或对应的原生保持一致,目前的进展情况在网站上以six-speed跟踪,显示了ES2015和ESNext功能与其原生ES5相比的性能。

ES2015及更高版本引入的优化功能的工作通过性能计划进行协调,V8团队收集并协调需要改进的领域,并设计文档来解决这些问题。

我的基础设施设置为利用--harmony标志,我应该删除吗?

Node.js上--harmony标志的当前行为是仅启用分阶段功能,毕竟,它现在是--es_staging的同义词,如上所述,这些是尚未被认为稳定的完整特征。如果你想要安全地玩,特别是在生产环境中,请考虑删除此运行时标志,直到它默认发布在V8上,所以,在Node.js上也是。如果启用此功能,则应准备好进一步的Node.js升级,如果V8更改其语义以更接近标准,则升级将破坏你的代码。

如何找到特定版本的Node.js附带的V8版本?

Node.js提供了一种简单的方法通过process全局对象来列出附带特定二进制文件的所有依赖项和相应版本,如果是V8引擎,请在终端中键入以下内容以检索其版本:

node -p process.versions.v8

博弈
2.5k 声望1.5k 粉丝

态度决定一切